package designPatterns_demo.mediator_pattern.demo2.after;
/**
 * 
 *
 * Description: 具体中介类
 *
 * @author zhangxujun
 * @version 1.0
 * <pre>
 * Modification History: 
 * Date         Author			Version     Description 
 * ------------------------------------------------------------------ 
 * 2017年7月6日      zhangxujun       1.0         1.0 Version 
 * </pre>
 */
public class Mediator extends AbstractMediator {

	@Override
	public void execute(String str, Object... objects) {
		switch (str) {
		case "purchase.byIBMComputer": // 购买IBM电脑
			this.byIBMComputer((Integer)objects[0]);
			break;
		case "sale.sellIBMComputer": // 销售IBM电脑
			this.sellIBMComputer((Integer)objects[0]);
			break;
		case "sale.offSale": // 折扣处理IBM电脑
			this.offSale();
			break;	
		case "stock.clearStock": // 仓库压力大，清仓处理，要求折价销售，要求采购停止采购
			this.clearStock();
			break;	
		default:
			break;
		}
	}
	
	/**
	 * 
	 * Description: 购买IBM电脑
	 *
	 * @param number 购买台数
	 * @Author zhangxujun
	 * @Create Date: 2017年7月6日 上午11:05:10
	 */
	public void byIBMComputer(int number) {
		// 获取电脑的销售情况
		int saleStatus = sale.getSaleStatus();
		if (saleStatus > 80) { // 销售情况良好
			System.out.println("采购IMB电脑" + number + "台");
			stock.increase(number);
		} else { // 销售情况不好
			int buyNumber = number / 2;
			System.out.println("采购IMB电脑" + buyNumber + "台");
			stock.increase(buyNumber);
		}
	}
	
	/**
	 * 
	 * Description: 销售IBM电脑
	 *
	 * @param number
	 * @Author zhangxujun
	 * @Create Date: 2017年7月6日 上午11:32:33
	 */
	public void sellIBMComputer(int number) {
		if (stock.getStockNumber() < number) { // 库存数量不够销售
			purchase.byIBMComputer(number);
		}
		System.out.println("销售IBM电脑" + number + "台");
		stock.decrease(number);
	}
	
	/**
	 * 
	 * Description: 折扣处理IBM电脑
	 *
	 * @Author zhangxujun
	 * @Create Date: 2017年7月6日 下午2:30:41
	 */
	public void offSale() {
		// 库存有多少卖多少
		System.out.println("折扣销售IBM电脑" + stock.getStockNumber() + "台");
	}
	
	/**
	 * 
	 * Description: 仓库压力大，清仓处理，要求折价销售，要求采购停止采购
	 *
	 * @Author zhangxujun
	 * @Create Date: 2017年7月6日 上午11:23:59
	 */
	public void clearStock() {
		// 要求折价销售
		sale.offSale();
		// 要求采购停止采购
		purchase.refuseBuyIBM();
	}
}
